package com.cs307.redcross.client;

import java.util.Vector;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface DatabaseHandlerServiceAsync {

        void delete(Person a, AsyncCallback<Boolean> callback);

        void delete(Event a, AsyncCallback<Boolean> callback);

        void delete(FreeTimeEvent a, AsyncCallback<Boolean> callback);

        void delete(EventTemplate a, AsyncCallback<Boolean> callback);

        void delete(Group a, AsyncCallback<Boolean> callback);

        void delete(Reminder a, AsyncCallback<Boolean> callback);

        void getAdmin(int id, AsyncCallback<Administrator> callback);

        void getAllAdmins(AsyncCallback<Vector<Administrator>> callback);

        void getAllEventTemplates(AsyncCallback<Vector<EventTemplate>> callback);

        void getAllEvents(AsyncCallback<Vector<Event>> callback);

        void getAllGroups(AsyncCallback<Vector<Group>> callback);

        void getAllPeople(AsyncCallback<Vector<Person>> callback);

        void getAllReminders(AsyncCallback<Vector<Reminder>> callback);

        void getAllVolunteers(AsyncCallback<Vector<Volunteer>> callback);

        void getEvent(int id, AsyncCallback<Event> callback);

        void getEventTemplate(int id, AsyncCallback<EventTemplate> callback);

        void getEvents(Group g, AsyncCallback<Vector<Event>> callback);

        void getEvents(Person p, boolean includeGroups,
                        AsyncCallback<Vector<Event>> callback);

        void getEvents(Person p, AsyncCallback<Vector<Event>> callback);

        void getFreeTimeEvent(int id, AsyncCallback<FreeTimeEvent> callback);

        void getFreeTimeEvent(int id, Person p,
                        AsyncCallback<FreeTimeEvent> callback);

        void getGroup(int id, AsyncCallback<Group> callback);

        void getGroup(String name, AsyncCallback<Group> callback);

        void getGroups(Person p, AsyncCallback<Vector<Group>> callback);

        void getNextEvent(AsyncCallback<Event> callback);

        void getNextID(AsyncCallback<Integer> callback);

        void getNextReminder(AsyncCallback<Reminder> callback);

        void getPerson(int id, AsyncCallback<Person> callback);

        void getPerson(String user, AsyncCallback<Person> callback);

        void getReminder(int id, AsyncCallback<Reminder> callback);

        void getReminders(Event e, AsyncCallback<Vector<Reminder>> callback);

        void getVolunteer(int id, AsyncCallback<Volunteer> callback);

        void inDB(Administrator a, AsyncCallback<Boolean> callback);

        void inDB(Event a, AsyncCallback<Boolean> callback);

        void inDB(FreeTimeEvent a, AsyncCallback<Boolean> callback);

        void inDB(EventTemplate a, AsyncCallback<Boolean> callback);

        void inDB(Group a, AsyncCallback<Boolean> callback);

        void inDB(Volunteer a, AsyncCallback<Boolean> callback);

        void inDB(Reminder a, AsyncCallback<Boolean> callback);

        void recreateDB(AsyncCallback<Void> callback);
        
        void startDatabaseHandler(AsyncCallback<Void> callback);

        void validPassword(String user, String password,
                        AsyncCallback<Integer> callback);

        void validUser(String s, AsyncCallback<Boolean> callback);

        void write(Administrator a, AsyncCallback<Integer> callback);

        void write(Volunteer a, AsyncCallback<Integer> callback);

        void write(Event a, AsyncCallback<Integer> callback);

        void write(FreeTimeEvent a, AsyncCallback<Integer> callback);

        void write(EventTemplate a, AsyncCallback<Integer> callback);

        void write(Group a, AsyncCallback<Integer> callback);

        void write(Reminder a, AsyncCallback<Integer> callback);

		void write(ReminderTemplate a, AsyncCallback<Integer> callback);

		void sendSMS(Vector<Person> people, String message, String subject,
				AsyncCallback<Boolean> callback);

		void sendConfirmation(Volunteer v, AsyncCallback<Void> callback);

		void confirm(String code, AsyncCallback<Boolean> callback);

		void checkWithServerIfSessionIdIsStillLegal(int sessionID,
				AsyncCallback<Boolean> callback);

		void getUserFromSessionId(int sessionID, AsyncCallback<Person> callback);

		void delete(ReminderTemplate a, AsyncCallback<Boolean> callback);

		void getAllLogFileEntries(AsyncCallback<Vector<LogFileEntry>> callback);

		void getAllReminderTemplates(
				AsyncCallback<Vector<ReminderTemplate>> callback);

		void getLogFileEntry(int id, AsyncCallback<LogFileEntry> callback);

		void getReminderTemplate(int id,
				AsyncCallback<ReminderTemplate> callback);

		void inDB(ReminderTemplate a, AsyncCallback<Boolean> callback);

		void convertToAdmin(Volunteer v, AsyncCallback<Administrator> callback);

		void forgotPassword(String user, AsyncCallback<Boolean> callback);

		void getAllFutureEvents(AsyncCallback<Vector<Event>> callback);

		void sendInvitation(Vector<Person> people, Event event, String message,
				AsyncCallback<Void> callback);

		

}